package cn.com.easy.autocomplete.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;

import cn.com.easy.autocomplete.model.WordModel;

/**
 * 搜索建议，对外服务类
 * 
 * @author nibili 2015年6月19日
 * 
 */
public class SuggestionService {

	/** 搜索词分表服务类 */
	@Autowired
	private PartitionWordService partitionWordService;

	/**
	 * 按搜索词 查找 相关结果<br>
	 * 选判断是否是字母， <br>
	 * 是：查找拼音开头--》查找缩写词开头--》文本匹配<br>
	 * 否：按文本字段查
	 * 
	 * @param input
	 * @param limit
	 * @return
	 * @auth nibili 2015年6月19日
	 */
	public String[] getSuggestions(String input, int limit) {

		List<WordModel> words = partitionWordService.findWordsLike(input, limit);
		String[] suggestions = new String[0];
		if (words != null) {
			suggestions = new String[words.size()];
			for (int i = 0; i < suggestions.length; i++) {
				suggestions[i] = words.get(i).getText();
			}
		}
		return suggestions;
	}

	/**
	 * 获取纠正的搜索词，搜索结果是按 存储的结果的大小，降序排的第一个
	 * 
	 * @param original
	 * @param threshold
	 * @return
	 * @auth nibili 2015年6月19日
	 */
	public String getSuggestKeyword(String original, int threshold) {
		if (!StringUtils.hasText(original)) {
			return null;
		}
		List<WordModel> words = partitionWordService.findWordsWithSamePinyin(original, 1);
		String resultText = null;
		if (words != null && words.size() == 1) {
			WordModel w = words.get(0);
			if (w.getResultCount() > threshold) {
				resultText = w.getText();
			}
		}
		return resultText;
	}

}
